home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / AIncludes / MIDI.a < prev    next >
Text File  |  1996-05-01  |  21KB  |  891 lines

  1. ;
  2. ;    File:        MIDI.a
  3. ;
  4. ;    Contains:    MIDI Manager Interfaces.
  5. ;
  6. ;    Version:    Technology:    System 7.5
  7. ;                Release:    Universal Interfaces 3.0d3 on Copland DR1
  8. ;
  9. ;    Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10. ;
  11. ;    Bugs?:        If you find a problem with this file, send the file and version
  12. ;                information (from above) and the problem description to:
  13. ;
  14. ;                    Internet:    apple.bugs@applelink.apple.com
  15. ;                    AppleLink:    APPLE.BUGS
  16. ;
  17. ;
  18.     IF &TYPE('__MIDI__') = 'UNDEFINED' THEN
  19. __MIDI__ SET 1
  20.  
  21.     IF &TYPE('__ERRORS__') = 'UNDEFINED' THEN
  22.     include 'Errors.a'
  23.     ENDIF
  24.     IF &TYPE('__TYPES__') = 'UNDEFINED' THEN
  25.     include 'Types.a'
  26.     ENDIF
  27.     IF &TYPE('__MIXEDMODE__') = 'UNDEFINED' THEN
  28.     include 'MixedMode.a'
  29.     ENDIF
  30.     IF FOR_SYSTEM7_ONLY THEN
  31. ;
  32. ;                        * * *  N O T E  * * * 
  33. ;
  34. ;    This file has been updated to include MIDI 2.0 interfaces.  
  35. ;    
  36. ;    The MIDI 2.0 interfaces were developed for the classic 68K runtime.
  37. ;    Since then, Apple has created the PowerPC and CFM 68K runtimes.
  38. ;    Currently, the extra functions in MIDI 2.0 are not in InterfaceLib
  39. ;    and thus not callable from PowerPC and CFM 68K runtimes (you'll
  40. ;    get a linker error).  
  41. ;
  42.  
  43. midiMaxNameLen                    EQU        31                    ;maximum number of characters in port and client names
  44.                                                             ; Time formats 
  45. midiFormatMSec                    EQU        0                    ;milliseconds
  46. midiFormatBeats                    EQU        1                    ;beats
  47. midiFormat24fpsBit                EQU        2                    ;24 frames/sec.
  48. midiFormat25fpsBit                EQU        3                    ;25 frames/sec.
  49. midiFormat30fpsDBit                EQU        4                    ;30 frames/sec. drop-frame
  50. midiFormat30fpsBit                EQU        5                    ;30 frames/sec.
  51. midiFormat24fpsQF                EQU        6                    ;24 frames/sec. longInt format 
  52. midiFormat25fpsQF                EQU        7                    ;25 frames/sec. longInt format 
  53. midiFormat30fpsDQF                EQU        8                    ;30 frames/sec. drop-frame longInt format 
  54. midiFormat30fpsQF                EQU        9                    ;30 frames/sec. longInt format 
  55. midiInternalSync                EQU        0                    ;internal sync
  56. midiExternalSync                EQU        1                    ;external sync
  57.                                                             ; Port types
  58. midiPortTypeTime                EQU        0                    ;time port
  59. midiPortTypeInput                EQU        1                    ;input port
  60. midiPortTypeOutput                EQU        2                    ;output port
  61. midiPortTypeTimeInv                EQU        3                    ;invisible time port
  62. midiPortInvisible                EQU        $8000                ;logical OR this to other types to make invisible ports
  63. midiPortTypeMask                EQU        $0007                ;logical AND with this to convert new port types to old,
  64.                                                             ;ie. to strip the property bits
  65.                                                             ; OffsetTimes  
  66. midiGetEverything                EQU        $7FFFFFFF            ;get all packets, regardless of time stamps
  67. midiGetNothing                    EQU        $80000000            ;get no packets, regardless of time stamps
  68. midiGetCurrent                    EQU        $00000000            ;get current packets only
  69. ;
  70. ;    MIDI data and messages are passed in MIDIPacket records (see below).
  71. ;    The first byte of every MIDIPacket contains a set of flags
  72. ;
  73. ;    bits 0-1    00 = new MIDIPacket, not continued
  74. ;                     01 = begining of continued MIDIPacket
  75. ;                     10 = end of continued MIDIPacket
  76. ;                     11 = continuation
  77. ;    bits 2-3     reserved
  78. ;
  79. ;    bits 4-6      000 = packet contains MIDI data
  80. ;
  81. ;                  001 = packet contains MIDI Manager message
  82. ;
  83. ;    bit 7         0 = MIDIPacket has valid stamp
  84. ;                  1 = stamp with current clock
  85. ;
  86.  
  87. midiContMask                    EQU        $03
  88. midiNoCont                        EQU        $00
  89. midiStartCont                    EQU        $01
  90. midiMidCont                        EQU        $03
  91. midiEndCont                        EQU        $02
  92. midiTypeMask                    EQU        $70
  93. midiMsgType                        EQU        $00
  94. midiMgrType                        EQU        $10
  95. midiTimeStampMask                EQU        $80
  96. midiTimeStampCurrent            EQU        $80
  97. midiTimeStampValid                EQU        $00                    ; MIDIPacket command words (the first word in the data field for midiMgrType messages) 
  98. midiOverflowErr                    EQU        $0001
  99. midiSCCErr                        EQU        $0002
  100. midiPacketErr                    EQU        $0003                ;all command words less than this value are error indicators
  101. midiMaxErr                        EQU        $00FF                ; Valid results to be returned by readHooks 
  102. midiKeepPacket                    EQU        0
  103. midiMorePacket                    EQU        1
  104. midiNoMorePacket                EQU        2
  105. midiHoldPacket                    EQU        3                    ; Driver calls 
  106. midiOpenDriver                    EQU        1
  107. midiCloseDriver                    EQU        2
  108.  
  109. mdvrAbortNotesOff                EQU        0                    ;abort previous mdvrNotesOff request
  110. mdvrChanNotesOff                EQU        1                    ;generate channel note off messages
  111. mdvrAllNotesOff                    EQU        2                    ;generate all note off messages
  112. mdvrStopOut                        EQU        0                    ;stop calling MDVROut temporarily
  113. mdvrStartOut                    EQU        1                    ;resume calling MDVROut
  114. MIDIPacket                RECORD 0
  115. flags                     ds.b    1                ; offset: $0 (0)
  116. len                         ds.b    1                ; offset: $1 (1)
  117. tStamp                     ds.l    1                ; offset: $2 (2)
  118. data                     ds.b    249                ; offset: $6 (6)
  119.                          ORG 256
  120. sizeof                     EQU *                    ; size:   $100 (256)
  121.                         ENDR
  122. ; typedef struct MIDIPacket *            MIDIPacketPtr
  123.  
  124. MIDIClkInfo                RECORD 0
  125. syncType                 ds.w    1                ; offset: $0 (0)        ; synchronization external/internal
  126. curTime                     ds.l    1                ; offset: $2 (2)        ; current value of port's clock
  127. format                     ds.w    1                ; offset: $6 (6)        ; time code format
  128. sizeof                     EQU *                    ; size:   $8 (8)
  129.                         ENDR
  130. MIDIIDRec                RECORD 0
  131. clientID                 ds.l    1                ; offset: $0 (0)
  132. portID                     ds.l    1                ; offset: $4 (4)
  133. sizeof                     EQU *                    ; size:   $8 (8)
  134.                         ENDR
  135. MIDIPortInfo            RECORD 0
  136. portType                 ds.w    1                ; offset: $0 (0)        ; type of port
  137. timeBase                 ds        MIDIIDRec        ; offset: $2 (2)        ; MIDIIDRec for time base
  138. numConnects                 ds.w    1                ; offset: $A (10)        ; number of connections
  139. cList                     ds        MIDIIDRec        ; offset: $C (12) <-- really an array of length one ; ARRAY [1..numConnects] of MIDIIDRec
  140. sizeof                     EQU *                    ; size:   $14 (20)
  141.                         ENDR
  142. ; typedef struct MIDIPortInfo *            MIDIPortInfoPtr
  143.  
  144. ; typedef MIDIPortInfoPtr *                MIDIPortInfoHdl
  145.  
  146. ; typedef MIDIPortInfoPtr *                MIDIPortInfoHandle
  147.  
  148. MIDIPortParams            RECORD 0
  149. portID                     ds.l    1                ; offset: $0 (0)        ; ID of port, unique within client
  150. portType                 ds.w    1                ; offset: $4 (4)        ; Type of port - input, output, time, etc.
  151. timeBase                 ds.w    1                ; offset: $6 (6)        ; refnum of time base, 0 if none
  152. offsetTime                 ds.l    1                ; offset: $8 (8)        ; offset for current time stamps
  153. readHook                 ds.l    1                ; offset: $C (12)        ; routine to call when input data is valid
  154. refCon                     ds.l    1                ; offset: $10 (16)        ; refcon for port (for client use)
  155. initClock                 ds        MIDIClkInfo        ; offset: $14 (20)        ; initial settings for a time base
  156. name                     ds        Str255            ; offset: $1C (28)        ; name of the port, This is a real live string, not a ptr.
  157. sizeof                     EQU *                    ; size:   $11C (284)
  158.                         ENDR
  159. ; typedef struct MIDIPortParams *        MIDIPortParamsPtr
  160.  
  161. MIDIIDList                RECORD 0
  162. numIDs                     ds.w    1                ; offset: $0 (0)
  163. list                     ds.l    1                ; offset: $2 (2) <-- really an array of length one
  164. sizeof                     EQU *                    ; size:   $6 (6)
  165.                         ENDR
  166. ; typedef struct MIDIIDList *            MIDIIDListPtr
  167.  
  168. ; typedef MIDIIDListPtr *                MIDIIDListHdl
  169.  
  170. ; typedef MIDIIDListPtr *                MIDIIDListHandle
  171.  
  172. ;  MDVR Control structs
  173. MDVRInCtlRec            RECORD 0
  174. timeCodeClock             ds.w    1                ; offset: $0 (0)        ; refnum of time base for time code
  175. timeCodeFormat             ds.w    1                ; offset: $2 (2)        ; format of time code output
  176. readProc                 ds.l    1                ; offset: $4 (4)        ; proc to call with intput characters
  177. commProc                 ds.l    1                ; offset: $8 (8)        ; proc to call for handshaking
  178. refCon                     ds.l    1                ; offset: $C (12)        ; refCon passed to readProc, commProc
  179. sizeof                     EQU *                    ; size:   $10 (16)
  180.                         ENDR
  181. ; typedef struct MDVRInCtlRec *            MDVRInCtlPtr
  182.  
  183. MDVROutCtlRec            RECORD 0
  184. timeCodeClock             ds.w    1                ; offset: $0 (0)        ; time base driven by time code
  185. timeCodeFormat             ds.w    1                ; offset: $2 (2)        ; format of time code to listen to
  186. timeCodeProc             ds.l    1                ; offset: $4 (4)        ; proc called on time code fmt change
  187. commProc                 ds.l    1                ; offset: $8 (8)        ; proc called for handshaking
  188. refCon                     ds.l    1                ; offset: $C (12)        ; refCon passed to timeCodeProc
  189. timeCodeFilter             ds.b    1                ; offset: $10 (16)        ; filter time code if true
  190. padding                     ds.b    1                ; offset: $11 (17)        ; unused pad byte
  191. midiMsgTicks             ds.l    1                ; offset: $12 (18)        ; value of Ticks when MIDI msg rcvd
  192. timeCodeTicks             ds.l    1                ; offset: $16 (22)        ; value of Ticks when time code rcvd
  193. sizeof                     EQU *                    ; size:   $1A (26)
  194.                         ENDR
  195. ; typedef struct MDVROutCtlRec *        MDVROutCtlPtr
  196.  
  197. ; typedef void *                        MDVRPtr
  198.  
  199. ;
  200. ; pascal NumVersion MIDIVersion(void )
  201. ;
  202.     IF ¨ GENERATINGCFM THEN
  203.         Macro
  204.         _MIDIVersion
  205.             move.l              #$00000004,D0
  206.             dc.w                $A800
  207.         EndM
  208.     ELSE
  209.         IMPORT_CFM_FUNCTION MIDIVersion
  210.     ENDIF
  211.  
  212. ;
  213. ; pascal OSErr MIDISignIn(OSType clientID, long refCon, Handle icon, ConstStr255Param name)
  214. ;
  215.     IF ¨ GENERATINGCFM THEN
  216.         Macro
  217.         _MIDISignIn
  218.             move.l              #$00040004,D0
  219.             dc.w                $A800
  220.         EndM
  221.     ELSE
  222.         IMPORT_CFM_FUNCTION MIDISignIn
  223.     ENDIF
  224.  
  225. ;
  226. ; pascal void MIDISignOut(OSType clientID)
  227. ;
  228.     IF ¨ GENERATINGCFM THEN
  229.         Macro
  230.         _MIDISignOut
  231.             move.l              #$00080004,D0
  232.             dc.w                $A800
  233.         EndM
  234.     ELSE
  235.         IMPORT_CFM_FUNCTION MIDISignOut
  236.     ENDIF
  237.  
  238. ;
  239. ; pascal MIDIIDListHandle MIDIGetClients(void )
  240. ;
  241.     IF ¨ GENERATINGCFM THEN
  242.         Macro
  243.         _MIDIGetClients
  244.             move.l              #$000C0004,D0
  245.             dc.w                $A800
  246.         EndM
  247.     ELSE
  248.         IMPORT_CFM_FUNCTION MIDIGetClients
  249.     ENDIF
  250.  
  251. ;
  252. ; pascal void MIDIGetClientName(OSType clientID, Str255 name)
  253. ;
  254.     IF ¨ GENERATINGCFM THEN
  255.         Macro
  256.         _MIDIGetClientName
  257.             move.l              #$00100004,D0
  258.             dc.w                $A800
  259.         EndM
  260.     ELSE
  261.         IMPORT_CFM_FUNCTION MIDIGetClientName
  262.     ENDIF
  263.  
  264. ;
  265. ; pascal void MIDISetClientName(OSType clientID, ConstStr255Param name)
  266. ;
  267.     IF ¨ GENERATINGCFM THEN
  268.         Macro
  269.         _MIDISetClientName
  270.             move.l              #$00140004,D0
  271.             dc.w                $A800
  272.         EndM
  273.     ELSE
  274.         IMPORT_CFM_FUNCTION MIDISetClientName
  275.     ENDIF
  276.  
  277. ;
  278. ; pascal MIDIIDListHandle MIDIGetPorts(OSType clientID)
  279. ;
  280.     IF ¨ GENERATINGCFM THEN
  281.         Macro
  282.         _MIDIGetPorts
  283.             move.l              #$00180004,D0
  284.             dc.w                $A800
  285.         EndM
  286.     ELSE
  287.         IMPORT_CFM_FUNCTION MIDIGetPorts
  288.     ENDIF
  289.  
  290. ;
  291. ; pascal OSErr MIDIAddPort(OSType clientID, short BufSize, short *refnum, MIDIPortParamsPtr init)
  292. ;
  293.     IF ¨ GENERATINGCFM THEN
  294.         Macro
  295.         _MIDIAddPort
  296.             move.l              #$001C0004,D0
  297.             dc.w                $A800
  298.         EndM
  299.     ELSE
  300.         IMPORT_CFM_FUNCTION MIDIAddPort
  301.     ENDIF
  302.  
  303. ;
  304. ; pascal MIDIPortInfoHandle MIDIGetPortInfo(OSType clientID, OSType portID)
  305. ;
  306.     IF ¨ GENERATINGCFM THEN
  307.         Macro
  308.         _MIDIGetPortInfo
  309.             move.l              #$00200004,D0
  310.             dc.w                $A800
  311.         EndM
  312.     ELSE
  313.         IMPORT_CFM_FUNCTION MIDIGetPortInfo
  314.     ENDIF
  315.  
  316. ;
  317. ; pascal OSErr MIDIConnectData(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
  318. ;
  319.     IF ¨ GENERATINGCFM THEN
  320.         Macro
  321.         _MIDIConnectData
  322.             move.l              #$00240004,D0
  323.             dc.w                $A800
  324.         EndM
  325.     ELSE
  326.         IMPORT_CFM_FUNCTION MIDIConnectData
  327.     ENDIF
  328.  
  329. ;
  330. ; pascal OSErr MIDIUnConnectData(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
  331. ;
  332.     IF ¨ GENERATINGCFM THEN
  333.         Macro
  334.         _MIDIUnConnectData
  335.             move.l              #$00280004,D0
  336.             dc.w                $A800
  337.         EndM
  338.     ELSE
  339.         IMPORT_CFM_FUNCTION MIDIUnConnectData
  340.     ENDIF
  341.  
  342. ;
  343. ; pascal OSErr MIDIConnectTime(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
  344. ;
  345.     IF ¨ GENERATINGCFM THEN
  346.         Macro
  347.         _MIDIConnectTime
  348.             move.l              #$002C0004,D0
  349.             dc.w                $A800
  350.         EndM
  351.     ELSE
  352.         IMPORT_CFM_FUNCTION MIDIConnectTime
  353.     ENDIF
  354.  
  355. ;
  356. ; pascal OSErr MIDIUnConnectTime(OSType srcClID, OSType srcPortID, OSType dstClID, OSType dstPortID)
  357. ;
  358.     IF ¨ GENERATINGCFM THEN
  359.         Macro
  360.         _MIDIUnConnectTime
  361.             move.l              #$00300004,D0
  362.             dc.w                $A800
  363.         EndM
  364.     ELSE
  365.         IMPORT_CFM_FUNCTION MIDIUnConnectTime
  366.     ENDIF
  367.  
  368. ;
  369. ; pascal void MIDIFlush(short refnum)
  370. ;
  371.     IF ¨ GENERATINGCFM THEN
  372.         Macro
  373.         _MIDIFlush
  374.             move.l              #$00340004,D0
  375.             dc.w                $A800
  376.         EndM
  377.     ELSE
  378.         IMPORT_CFM_FUNCTION MIDIFlush
  379.     ENDIF
  380.  
  381. ;
  382. ; pascal ProcPtr MIDIGetReadHook(short refnum)
  383. ;
  384.     IF ¨ GENERATINGCFM THEN
  385.         Macro
  386.         _MIDIGetReadHook
  387.             move.l              #$00380004,D0
  388.             dc.w                $A800
  389.         EndM
  390.     ELSE
  391.         IMPORT_CFM_FUNCTION MIDIGetReadHook
  392.     ENDIF
  393.  
  394. ;
  395. ; pascal void MIDISetReadHook(short refnum, ProcPtr hook)
  396. ;
  397.     IF ¨ GENERATINGCFM THEN
  398.         Macro
  399.         _MIDISetReadHook
  400.             move.l              #$003C0004,D0
  401.             dc.w                $A800
  402.         EndM
  403.     ELSE
  404.         IMPORT_CFM_FUNCTION MIDISetReadHook
  405.     ENDIF
  406.  
  407. ;
  408. ; pascal void MIDIGetPortName(OSType clientID, OSType portID, Str255 name)
  409. ;
  410.     IF ¨ GENERATINGCFM THEN
  411.         Macro
  412.         _MIDIGetPortName
  413.             move.l              #$00400004,D0
  414.             dc.w                $A800
  415.         EndM
  416.     ELSE
  417.         IMPORT_CFM_FUNCTION MIDIGetPortName
  418.     ENDIF
  419.  
  420. ;
  421. ; pascal void MIDISetPortName(OSType clientID, OSType portID, ConstStr255Param name)
  422. ;
  423.     IF ¨ GENERATINGCFM THEN
  424.         Macro
  425.         _MIDISetPortName
  426.             move.l              #$00440004,D0
  427.             dc.w                $A800
  428.         EndM
  429.     ELSE
  430.         IMPORT_CFM_FUNCTION MIDISetPortName
  431.     ENDIF
  432.  
  433. ;
  434. ; pascal void MIDIWakeUp(short refnum, long time, long period, MIDITimeProcPtr timeProc)
  435. ;
  436.     IF ¨ GENERATINGCFM THEN
  437.         Macro
  438.         _MIDIWakeUp
  439.             move.l              #$00480004,D0
  440.             dc.w                $A800
  441.         EndM
  442.     ELSE
  443.         IMPORT_CFM_FUNCTION MIDIWakeUp
  444.     ENDIF
  445.  
  446. ;
  447. ; pascal void MIDIRemovePort(short refnum)
  448. ;
  449.     IF ¨ GENERATINGCFM THEN
  450.         Macro
  451.         _MIDIRemovePort
  452.             move.l              #$004C0004,D0
  453.             dc.w                $A800
  454.         EndM
  455.     ELSE
  456.         IMPORT_CFM_FUNCTION MIDIRemovePort
  457.     ENDIF
  458.  
  459. ;
  460. ; pascal short MIDIGetSync(short refnum)
  461. ;
  462.     IF ¨ GENERATINGCFM THEN
  463.         Macro
  464.         _MIDIGetSync
  465.             move.l              #$00500004,D0
  466.             dc.w                $A800
  467.         EndM
  468.     ELSE
  469.         IMPORT_CFM_FUNCTION MIDIGetSync
  470.     ENDIF
  471.  
  472. ;
  473. ; pascal void MIDISetSync(short refnum, short sync)
  474. ;
  475.     IF ¨ GENERATINGCFM THEN
  476.         Macro
  477.         _MIDISetSync
  478.             move.l              #$00540004,D0
  479.             dc.w                $A800
  480.         EndM
  481.     ELSE
  482.         IMPORT_CFM_FUNCTION MIDISetSync
  483.     ENDIF
  484.  
  485. ;
  486. ; pascal long MIDIGetCurTime(short refnum)
  487. ;
  488.     IF ¨ GENERATINGCFM THEN
  489.         Macro
  490.         _MIDIGetCurTime
  491.             move.l              #$00580004,D0
  492.             dc.w                $A800
  493.         EndM
  494.     ELSE
  495.         IMPORT_CFM_FUNCTION MIDIGetCurTime
  496.     ENDIF
  497.  
  498. ;
  499. ; pascal void MIDISetCurTime(short refnum, long time)
  500. ;
  501.     IF ¨ GENERATINGCFM THEN
  502.         Macro
  503.         _MIDISetCurTime
  504.             move.l              #$005C0004,D0
  505.             dc.w                $A800
  506.         EndM
  507.     ELSE
  508.         IMPORT_CFM_FUNCTION MIDISetCurTime
  509.     ENDIF
  510.  
  511. ;
  512. ; pascal void MIDIStartTime(short refnum)
  513. ;
  514.     IF ¨ GENERATINGCFM THEN
  515.         Macro
  516.         _MIDIStartTime
  517.             move.l              #$00600004,D0
  518.             dc.w                $A800
  519.         EndM
  520.     ELSE
  521.         IMPORT_CFM_FUNCTION MIDIStartTime
  522.     ENDIF
  523.  
  524. ;
  525. ; pascal void MIDIStopTime(short refnum)
  526. ;
  527.     IF ¨ GENERATINGCFM THEN
  528.         Macro
  529.         _MIDIStopTime
  530.             move.l              #$00640004,D0
  531.             dc.w                $A800
  532.         EndM
  533.     ELSE
  534.         IMPORT_CFM_FUNCTION MIDIStopTime
  535.     ENDIF
  536.  
  537. ;
  538. ; pascal void MIDIPoll(short refnum, long offsetTime)
  539. ;
  540.     IF ¨ GENERATINGCFM THEN
  541.         Macro
  542.         _MIDIPoll
  543.             move.l              #$00680004,D0
  544.             dc.w                $A800
  545.         EndM
  546.     ELSE
  547.         IMPORT_CFM_FUNCTION MIDIPoll
  548.     ENDIF
  549.  
  550. ;
  551. ; pascal OSErr MIDIWritePacket(short refnum, MIDIPacketPtr packet)
  552. ;
  553.     IF ¨ GENERATINGCFM THEN
  554.         Macro
  555.         _MIDIWritePacket
  556.             move.l              #$006C0004,D0
  557.             dc.w                $A800
  558.         EndM
  559.     ELSE
  560.         IMPORT_CFM_FUNCTION MIDIWritePacket
  561.     ENDIF
  562.  
  563. ;
  564. ; pascal Boolean MIDIWorldChanged(OSType clientID)
  565. ;
  566.     IF ¨ GENERATINGCFM THEN
  567.         Macro
  568.         _MIDIWorldChanged
  569.             move.l              #$00700004,D0
  570.             dc.w                $A800
  571.         EndM
  572.     ELSE
  573.         IMPORT_CFM_FUNCTION MIDIWorldChanged
  574.     ENDIF
  575.  
  576. ;
  577. ; pascal long MIDIGetOffsetTime(short refnum)
  578. ;
  579.     IF ¨ GENERATINGCFM THEN
  580.         Macro
  581.         _MIDIGetOffsetTime
  582.             move.l              #$00740004,D0
  583.             dc.w                $A800
  584.         EndM
  585.     ELSE
  586.         IMPORT_CFM_FUNCTION MIDIGetOffsetTime
  587.     ENDIF
  588.  
  589. ;
  590. ; pascal void MIDISetOffsetTime(short refnum, long offsetTime)
  591. ;
  592.     IF ¨ GENERATINGCFM THEN
  593.         Macro
  594.         _MIDISetOffsetTime
  595.             move.l              #$00780004,D0
  596.             dc.w                $A800
  597.         EndM
  598.     ELSE
  599.         IMPORT_CFM_FUNCTION MIDISetOffsetTime
  600.     ENDIF
  601.  
  602. ;
  603. ; pascal long MIDIConvertTime(short srcFormat, short dstFormat, long time)
  604. ;
  605.     IF ¨ GENERATINGCFM THEN
  606.         Macro
  607.         _MIDIConvertTime
  608.             move.l              #$007C0004,D0
  609.             dc.w                $A800
  610.         EndM
  611.     ELSE
  612.         IMPORT_CFM_FUNCTION MIDIConvertTime
  613.     ENDIF
  614.  
  615. ;
  616. ; pascal long MIDIGetRefCon(short refnum)
  617. ;
  618.     IF ¨ GENERATINGCFM THEN
  619.         Macro
  620.         _MIDIGetRefCon
  621.             move.l              #$00800004,D0
  622.             dc.w                $A800
  623.         EndM
  624.     ELSE
  625.         IMPORT_CFM_FUNCTION MIDIGetRefCon
  626.     ENDIF
  627.  
  628. ;
  629. ; pascal void MIDISetRefCon(short refnum, long refCon)
  630. ;
  631.     IF ¨ GENERATINGCFM THEN
  632.         Macro
  633.         _MIDISetRefCon
  634.             move.l              #$00840004,D0
  635.             dc.w                $A800
  636.         EndM
  637.     ELSE
  638.         IMPORT_CFM_FUNCTION MIDISetRefCon
  639.     ENDIF
  640.  
  641. ;
  642. ; pascal long MIDIGetClRefCon(OSType clientID)
  643. ;
  644.     IF ¨ GENERATINGCFM THEN
  645.         Macro
  646.         _MIDIGetClRefCon
  647.             move.l              #$00880004,D0
  648.             dc.w                $A800
  649.         EndM
  650.     ELSE
  651.         IMPORT_CFM_FUNCTION MIDIGetClRefCon
  652.     ENDIF
  653.  
  654. ;
  655. ; pascal void MIDISetClRefCon(OSType clientID, long refCon)
  656. ;
  657.     IF ¨ GENERATINGCFM THEN
  658.         Macro
  659.         _MIDISetClRefCon
  660.             move.l              #$008C0004,D0
  661.             dc.w                $A800
  662.         EndM
  663.     ELSE
  664.         IMPORT_CFM_FUNCTION MIDISetClRefCon
  665.     ENDIF
  666.  
  667. ;
  668. ; pascal short MIDIGetTCFormat(short refnum)
  669. ;
  670.     IF ¨ GENERATINGCFM THEN
  671.         Macro
  672.         _MIDIGetTCFormat
  673.             move.l              #$00900004,D0
  674.             dc.w                $A800
  675.         EndM
  676.     ELSE
  677.         IMPORT_CFM_FUNCTION MIDIGetTCFormat
  678.     ENDIF
  679.  
  680. ;
  681. ; pascal void MIDISetTCFormat(short refnum, short format)
  682. ;
  683.     IF ¨ GENERATINGCFM THEN
  684.         Macro
  685.         _MIDISetTCFormat
  686.             move.l              #$00940004,D0
  687.             dc.w                $A800
  688.         EndM
  689.     ELSE
  690.         IMPORT_CFM_FUNCTION MIDISetTCFormat
  691.     ENDIF
  692.  
  693. ;
  694. ; pascal void MIDISetRunRate(short refnum, short rate, long time)
  695. ;
  696.     IF ¨ GENERATINGCFM THEN
  697.         Macro
  698.         _MIDISetRunRate
  699.             move.l              #$00980004,D0
  700.             dc.w                $A800
  701.         EndM
  702.     ELSE
  703.         IMPORT_CFM_FUNCTION MIDISetRunRate
  704.     ENDIF
  705.  
  706. ;
  707. ; pascal Handle MIDIGetClientIcon(OSType clientID)
  708. ;
  709.     IF ¨ GENERATINGCFM THEN
  710.         Macro
  711.         _MIDIGetClientIcon
  712.             move.l              #$009C0004,D0
  713.             dc.w                $A800
  714.         EndM
  715.     ELSE
  716.         IMPORT_CFM_FUNCTION MIDIGetClientIcon
  717.     ENDIF
  718.  
  719. ;
  720. ; pascal ProcPtr MIDICallAddress(short callNum)
  721. ;
  722.     IF ¨ GENERATINGCFM THEN
  723.         Macro
  724.         _MIDICallAddress
  725.             move.l              #$00A40004,D0
  726.             dc.w                $A800
  727.         EndM
  728.     ELSE
  729.         IMPORT_CFM_FUNCTION MIDICallAddress
  730.     ENDIF
  731.  
  732. ;
  733. ; pascal void MIDISetConnectionProc(short refNum, ProcPtr connectionProc, long refCon)
  734. ;
  735.     IF ¨ GENERATINGCFM THEN
  736.         Macro
  737.         _MIDISetConnectionProc
  738.             move.l              #$00A80004,D0
  739.             dc.w                $A800
  740.         EndM
  741.     ELSE
  742.         IMPORT_CFM_FUNCTION MIDISetConnectionProc
  743.     ENDIF
  744.  
  745. ;
  746. ; pascal void MIDIGetConnectionProc(short refnum, ProcPtr *connectionProc, long *refCon)
  747. ;
  748.     IF ¨ GENERATINGCFM THEN
  749.         Macro
  750.         _MIDIGetConnectionProc
  751.             move.l              #$00AC0004,D0
  752.             dc.w                $A800
  753.         EndM
  754.     ELSE
  755.         IMPORT_CFM_FUNCTION MIDIGetConnectionProc
  756.     ENDIF
  757.  
  758. ;
  759. ; pascal void MIDIDiscardPacket(short refnum, MIDIPacketPtr packet)
  760. ;
  761.     IF ¨ GENERATINGCFM THEN
  762.         Macro
  763.         _MIDIDiscardPacket
  764.             move.l              #$00B00004,D0
  765.             dc.w                $A800
  766.         EndM
  767.     ELSE
  768.         IMPORT_CFM_FUNCTION MIDIDiscardPacket
  769.     ENDIF
  770.  
  771. ;
  772. ; pascal OSErr MDVRSignIn(OSType clientID, long refCon, Handle icon, Str255 name)
  773. ;
  774.     IF ¨ GENERATINGCFM THEN
  775.         Macro
  776.         _MDVRSignIn
  777.             move.l              #$00B40004,D0
  778.             dc.w                $A800
  779.         EndM
  780.     ELSE
  781.         IMPORT_CFM_FUNCTION MDVRSignIn
  782.     ENDIF
  783.  
  784. ;
  785. ; pascal void MDVRSignOut(OSType clientID)
  786. ;
  787.     IF ¨ GENERATINGCFM THEN
  788.         Macro
  789.         _MDVRSignOut
  790.             move.l              #$00B80004,D0
  791.             dc.w                $A800
  792.         EndM
  793.     ELSE
  794.         IMPORT_CFM_FUNCTION MDVRSignOut
  795.     ENDIF
  796.  
  797. ;
  798. ; pascal MDVRPtr MDVROpen(short portType, short refnum)
  799. ;
  800.     IF ¨ GENERATINGCFM THEN
  801.         Macro
  802.         _MDVROpen
  803.             move.l              #$00BC0004,D0
  804.             dc.w                $A800
  805.         EndM
  806.     ELSE
  807.         IMPORT_CFM_FUNCTION MDVROpen
  808.     ENDIF
  809.  
  810. ;
  811. ; pascal void MDVRClose(MDVRPtr driverPtr)
  812. ;
  813.     IF ¨ GENERATINGCFM THEN
  814.         Macro
  815.         _MDVRClose
  816.             move.l              #$00C00004,D0
  817.             dc.w                $A800
  818.         EndM
  819.     ELSE
  820.         IMPORT_CFM_FUNCTION MDVRClose
  821.     ENDIF
  822.  
  823. ;
  824. ; pascal void MDVRControlIn(MDVRPtr portPtr, MDVRInCtlPtr inputCtl)
  825. ;
  826.     IF ¨ GENERATINGCFM THEN
  827.         Macro
  828.         _MDVRControlIn
  829.             move.l              #$00C40004,D0
  830.             dc.w                $A800
  831.         EndM
  832.     ELSE
  833.         IMPORT_CFM_FUNCTION MDVRControlIn
  834.     ENDIF
  835.  
  836. ;
  837. ; pascal void MDVRControlOut(MDVRPtr portPtr, MDVROutCtlPtr outputCtl)
  838. ;
  839.     IF ¨ GENERATINGCFM THEN
  840.         Macro
  841.         _MDVRControlOut
  842.             move.l              #$00C80004,D0
  843.             dc.w                $A800
  844.         EndM
  845.     ELSE
  846.         IMPORT_CFM_FUNCTION MDVRControlOut
  847.     ENDIF
  848.  
  849. ;
  850. ; pascal void MDVRIn(MDVRPtr portPtr)
  851. ;
  852.     IF ¨ GENERATINGCFM THEN
  853.         Macro
  854.         _MDVRIn
  855.             move.l              #$00CC0004,D0
  856.             dc.w                $A800
  857.         EndM
  858.     ELSE
  859.         IMPORT_CFM_FUNCTION MDVRIn
  860.     ENDIF
  861.  
  862. ;
  863. ; pascal void MDVROut(MDVRPtr portPtr, char *dataPtr, short length)
  864. ;
  865.     IF ¨ GENERATINGCFM THEN
  866.         Macro
  867.         _MDVROut
  868.             move.l              #$00D00004,D0
  869.             dc.w                $A800
  870.         EndM
  871.     ELSE
  872.         IMPORT_CFM_FUNCTION MDVROut
  873.     ENDIF
  874.  
  875. ;
  876. ; pascal void MDVRNotesOff(MDVRPtr portPtr, short mode)
  877. ;
  878.     IF ¨ GENERATINGCFM THEN
  879.         Macro
  880.         _MDVRNotesOff
  881.             move.l              #$00D40004,D0
  882.             dc.w                $A800
  883.         EndM
  884.     ELSE
  885.         IMPORT_CFM_FUNCTION MDVRNotesOff
  886.     ENDIF
  887.  
  888.     ENDIF
  889.     ENDIF ; __MIDI__ 
  890.  
  891.